package com.venutech.gongan.util;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapUntil {
    private static ConcurrentHashMap<String, List> cacheMap = new ConcurrentHashMap<>();

    private static ConcurrentHashMap<String, Integer> cacheSizeMap = new ConcurrentHashMap<>();
    /**
     * 获取缓存的对象
     *
     * @param account
     * @return
     */
    public static List getCache(String account) {

        account = getCacheKey(account);
        // 如果缓冲中有该账号，则返回value
        if(StringUtils.isEmpty(account)){
            return  new ArrayList<>();
        }
        if (cacheMap.containsKey(account)) {
            return cacheMap.get(account);
        }
        // 如果缓存中没有该账号，把该帐号对象缓存到concurrentHashMap中
        return cacheMap.get(account);
    }

    /**
     * 获取缓存的对象
     * @param account
     * @return
     */
    public static List getEquipmenCache(String account) {
        account = getCacheKey(account);
        // 如果缓冲中有该账号，则返回value
        if(StringUtils.isEmpty(account)){
            return  new ArrayList<>();
        }
        if (cacheMap.containsKey(account)) {
            return cacheMap.get(account);
        }
        // 如果缓存中没有该账号，把该帐号对象缓存到concurrentHashMap中
        return cacheMap.get(account);
    }

    /**
     * 初始化缓存
     *
     * @param account
     */
    public static void initDeviceCache(String account,List list_qdsxj) {
        // 一般是进行数据库查询，将查询的结果进行缓存
        cacheMap.put(account,list_qdsxj);
    }

    /**
     * 拼接一个缓存key
     *
     * @param account
     * @return
     */
    public static String getCacheKey(String account) {
        return account;
    }

    /**
     * 移除缓存信息
     * @param account
     */
    public static void removeCache(String account) {
        cacheMap.remove(getCacheKey(account));
    }

    /**
     * 移除缓存信息
     * @param account
     */
    public static void removeEquipmenCache(String account) {
        cacheMap.remove(getCacheKey(account));
    }

    /**
     * 把集合里面数据大小设置到缓存里面
     * @param key
     * @param size
     */
    public static void initDeviceSizeCache(String key, int size) {
        cacheSizeMap.put(key,size);
    }
    /**
     * 获取缓存里面集合数据大小
     * @param key
     */
    public static Integer getDeviceSizeCache(String key) {
      return   cacheSizeMap.get(key);
    }
}
